﻿// See https://aka.ms/new-console-template for more information
using AbstractLib;
using Castle.DynamicProxy;
using DynamicAgent;

#region 使用Castle.DynamicProxy 实现动态代理
// 创建代理生成器
ProxyGenerator generator = new ProxyGenerator();

// 创建被代理对象
IMyServices service = new MyService();

// 创建拦截器
// IInterceptor interceptor = new LoggerInterceptor();
var aopCommonAsyncInterceptor = new AopCommonAsyncInterceptor(new List<IAopInterceptor> { new DefaultAopInterceptor() });

// 创建代理对象，注意需要代理的对象要么是接口，或者是类中包含虚方法或者是抽象方法
IMyServices proxy = generator.CreateInterfaceProxyWithTarget(service, aopCommonAsyncInterceptor);
proxy.SayHellow("Frank");
await proxy.SayHellowAsync("PP");
#endregion

Console.ReadKey();
